
"""
头条自动发文系统启动脚本
"""

import os
import sys
import subprocess
import webbrowser
import time
from pathlib import Path

def check_python_version():
    """检查Python版本"""
    if sys.version_info < (3, 8):
        print("❌ 错误: 需要Python 3.8或更高版本")
        print(f"当前版本: Python {sys.version}")
        sys.exit(1)
    print(f"✅ Python版本检查通过: {sys.version.split()[0]}")

def check_requirements():
    """检查依赖包是否安装"""
    requirements_file = Path("requirements.txt")
    if not requirements_file.exists():
        print("❌ 错误: 找不到requirements.txt文件")
        return False
    
    try:
        import fastapi
        import uvicorn
        import requests
        print("✅ 主要依赖包检查通过")
        return True
    except ImportError as e:
        print(f"❌ 缺少依赖包: {e}")
        return False

def install_requirements():
    """安装依赖包"""
    print("🔄 正在安装依赖包...")
    try:
        subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"])
        print("✅ 依赖包安装完成")
        return True
    except subprocess.CalledProcessError:
        print("❌ 依赖包安装失败")
        return False

def check_env_file():
    """检查环境配置文件"""
    env_file = Path(".env")
    env_example = Path("env_example.txt")
    
    if not env_file.exists():
        if env_example.exists():
            print("⚠️  未找到.env配置文件")
            print("请将env_example.txt复制为.env并填入您的配置")
            
            # 自动创建.env文件
            try:
                with open(env_example, 'r', encoding='utf-8') as f:
                    content = f.read()
                with open(env_file, 'w', encoding='utf-8') as f:
                    f.write(content)
                print("✅ 已自动创建.env文件，请编辑后重新启动")
                return False
            except Exception as e:
                print(f"❌ 创建.env文件失败: {e}")
                return False
        else:
            print("❌ 找不到环境配置文件")
            return False
    
    print("✅ 环境配置文件检查通过")
    return True

def create_directories():
    """创建必要的目录"""
    directories = ["uploads", "cookies", "browser_data"]
    for directory in directories:
        Path(directory).mkdir(exist_ok=True)
    print("✅ 目录结构检查完成")

def start_application():
    """启动应用程序"""
    print("\n🚀 启动头条自动发文系统...")
    print("=" * 50)
    
    try:
        # 导入主应用
        from main import app
        import uvicorn
        
        # 启动服务器
        print("📡 服务器启动中...")
        print("🌐 访问地址: http://localhost:8000")
        print("📖 使用说明: 请在浏览器中打开上述地址")
        print("=" * 50)
        
        # 自动打开浏览器
        time.sleep(2)
        try:
            webbrowser.open("http://localhost:8000")
        except:
            pass
        
        # 启动服务器
        uvicorn.run(
            "main:app",
            host="0.0.0.0",
            port=8000,
            reload=True,
            log_level="info"
        )
        
    except KeyboardInterrupt:
        print("\n👋 系统已停止")
    except Exception as e:
        print(f"❌ 启动失败: {e}")
        sys.exit(1)

def main():
    """主函数"""
    print("🎯 头条自动发文系统")
    print("=" * 30)
    
    # 检查Python版本
    check_python_version()
    
    # 检查依赖包
    if not check_requirements():
        print("\n🔧 正在安装缺少的依赖包...")
        if not install_requirements():
            print("❌ 安装失败，请手动执行: pip install -r requirements.txt")
            sys.exit(1)
    
    # 检查环境配置
    if not check_env_file():
        print("\n⚙️  请配置.env文件后重新启动")
        input("按Enter键退出...")
        sys.exit(0)
    
    # 创建目录
    create_directories()
    
    # 启动应用
    start_application()

if __name__ == "__main__":
    main()
